package com.engine.salary.entity.salarysob.po;

import com.engine.hrmelog.annotation.ElogTransform;
import com.engine.salary.annotation.Auth;
import com.engine.salary.enums.auth.AuthCheckTypeEnum;
import com.engine.salary.util.valid.Compare;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamOmitField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * 薪资帐套表
 */
@Data
@Builder
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@ElogTransform( name="薪资账套" )
//hrsa_salary_sob
@XStreamAlias("SalarySob")
@Auth(page = "salarySob",checkType = AuthCheckTypeEnum.SOB,sobIdField="id")
public class SalarySobPO {

    /**
     * 主键id
     */
    @ElogTransform( name="主键" )
    @Compare
    @XStreamOmitField
    private Long id;

    /**
     * 名称
     */
    @ElogTransform( name="名称" )
    @Compare
    @XStreamAlias("name")
    @XStreamAsAttribute
    private String name;

    /**
     * 个税扣缴义务人的主键id
     */
    @ElogTransform( name="个税扣缴义务人id" )
    @XStreamAlias("taxAgentId")
    @XStreamAsAttribute
    @Deprecated
    private Long taxAgentId;

    @XStreamOmitField
    List<Long> taxAgentIds;

    /**
     * 应税项目。1:正常工资薪金所得
     */
    @ElogTransform( name="薪资类型" )
    @Compare
    @XStreamAlias("incomeCategory")
    @XStreamAsAttribute
    private Integer incomeCategory;

    /**
     * 薪资周期。1:上上月、2:上月、3:本月、4:下月
     */
    @ElogTransform( name="薪资周期" )
    @Compare
    @XStreamAlias("salaryCycleType")
    @XStreamAsAttribute
    private Integer salaryCycleType;

    /**
     * 薪资周期的起始日期
     */
    @ElogTransform( name="薪资周期起始日期" )
    @Compare
    @XStreamAlias("salaryCycleFromDay")
    @XStreamAsAttribute
    private Integer salaryCycleFromDay;

    /**
     * 税款所属期。1:上上月、2:上月、3:本月、4:下月
     */
    @ElogTransform( name="税款所属期" )
    @Compare
    @XStreamAlias("taxCycleType")
    @XStreamAsAttribute
    private Integer taxCycleType;

    /**
     * 考勤周期。1:上上月、2:上月、3:本月、4:下月
     */
    @ElogTransform( name="考勤周期" )
    @Compare
    @XStreamAlias("attendCycleType")
    @XStreamAsAttribute
    private Integer attendCycleType;

    /**
     * 考勤周期的起始日期
     */
    @ElogTransform( name="考勤周期起始日期" )
    @Compare
    @XStreamAlias("attendCycleFromDay")
    @XStreamAsAttribute
    private Integer attendCycleFromDay;

    /**
     * 社保福利所属期。1:上上月、2:上月、3:本月、4:下月
     */
    @ElogTransform( name="社保福利所属期" )
    @Compare
    @XStreamAlias("socialSecurityCycleType")
    @XStreamAsAttribute
    private Integer socialSecurityCycleType;

    /**
     * 是否禁用。0：正常使用、1：禁用
     */
    @ElogTransform( name="是否禁用" )
    @XStreamAlias("disable")
    @XStreamAsAttribute
    private Integer disable;

    /**
     * 描述
     */
    @ElogTransform( name="描述" )
    @XStreamAlias("description")
    @XStreamAsAttribute
    private String description;

    /**
     * 创建人
     */
    @ElogTransform( name="创建人" )
    @XStreamAlias("creator")
    @XStreamAsAttribute
    private Long creator;

    /**
     * 创建时间
     */
    @ElogTransform( name="创建时间" )
    @XStreamAlias("createTime")
    @XStreamAsAttribute
    private Date createTime;

    /**
     * 更新时间
     */
    @ElogTransform( name="更新时间" )
    @XStreamAlias("updateTime")
    @XStreamAsAttribute
    private Date updateTime;

    /**
     * 是否已删除。0：未删除、1：已删除
     */
    @ElogTransform( name="是否已删除" )
    @XStreamAlias("deleteType")
    @XStreamAsAttribute
    private Integer deleteType;

    /**
     * 租户ID
     */
    @ElogTransform( name="租户" )
    @XStreamAlias("tenantKey")
    @XStreamAsAttribute
    private String tenantKey;

    Collection<Long> ids;


    private Set<String> opts;

}